package com.hqx.processcontrol;

import java.util.Scanner;

public class ForLoop {
    static Scanner sc = new Scanner(System.in);
    public static void main(String[] args) {
//        test();
//        test2();
//        test3();
//        test4();
        test6();
    }

    public static void test() {
        int result = 0;
        for (int i = 1;i <= 100;i++) {
            result += i;
        }
        System.out.println(result);
    }

    /**
     * 编写程序从1循环到150，并在每行打印一个值，另外在每个3的倍数行
     * 上打印出“foo”,在每个5的倍数行上打印“biz”,在每个7的倍数行上打印
     * 输出“baz”
     */
    public static void test2() {
        for (int i = 1; i <= 150; i++) {
            if(i%3 == 0) {
                System.out.println(i+"   foo");
            } else if(i%5 == 0) {
                System.out.println(i+"   biz");
            } else if(i%7 == 0) {
                System.out.println(i+"   baz");
            } else {
                System.out.println(i);
            }
        }
    }

    /**
     * 输入两个正整数m和n，求其最大公约数和最小公倍数。
     * 比如：12和20的最大公约数是4，最小公倍数是60。
     */
    public static void test3() {
        System.out.println("请输入第一个整数:");
        int m = sc.nextInt();
        System.out.println("请输入第二个整数:");
        int n = sc.nextInt();

        //求最大公约数，先找两数中最小的一个，从后往前找，第一个能被两数整除的为最大公约数
        int min = m>n ? m:n;
        for (int i = min;i >= 1;i--) {
            if(m%i == 0 && n%i==0) {
                System.out.println(i);
                break; //找到第一个公约数则退出循环
            }
        }

        //求最大公倍数,先找两数中最大一个数，
        // 循环条件是两数乘积（是公倍数，但不是最小公倍数）,初始化数值为两数中最大的一个
        int max = m > n ? m : n;
        for (int i = max;i<m*n;i++) {
            if(i % m == 0 && i % n == 0) {
                System.out.println(i);
                break; //找到第一个公倍数则退出循环
            }
        }
    }

    /**
     * 打印1~100之间所有奇数的和
     */
    public static void test4() {
        int sum = 0;
        for (int i = 1;i <= 100;i += 2) {
            sum += i;
        }
        System.out.println(sum);
    }

    /**
     * 打印1~100之间所有是7的倍数的整数的个数及总和（体会设置计数
     * 器的思想）
     */
    public static void test5() {
        int count = 0;
        int sum = 0;
        for (int i = 1;i <=100; i++) {
            if(i % 7 == 0) {
                count++;
                sum += i;
                System.out.println(i);
            }
        }
        System.out.println("是7的倍数的整数有:"+count+"个");
        System.out.println(sum);
    }

    /**
     * 输出所有的水仙花数，所谓水仙花数是指一个3位数，其各个位上数
     * 字立方和等于其本身。
     * 例如： 153 = 1*1*1 + 3*3*3 + 5*5*5
     */
    public static void test6() {
        for(int i = 100; i < 1000;i++) {
            int bai = i / 100;
            int shi = i % 100 / 10;
            int ge = i % 10;
            int  temp = (int) (Math.pow(bai,3) + Math.pow(shi,3) + Math.pow(ge,3));
            if(temp == i) {
                System.out.println(i);
            }
        }
    }
}
